package com.qdxwx.data.mapper.coupon;

import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.coupon.CouponCode;
import com.qdxwx.models.coupon.CouponCodeDTO;
import com.qdxwx.models.coupon.CouponCodeQuery;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * CouponCode接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
@Repository
public interface CouponCodeMapper {

	int insertCouponCode(CouponCode couponCode);
	/**
	 * 删除优惠券编码
	 */
	void deleteCouponCodeById(Long Id);
	/**
	 * 删除优惠券编码
	 */
	void deleteCouponCodeByCouponId(Long couponId);

	int updateCouponCode(CouponCode couponCode);

	/**
	 * 指派优惠券给用户
	 * @param couponCode
     */
	void updateCouponCodeUser(CouponCode couponCode);
	/**
	 * 过期的优惠编码改状态
	 */
	void overdueCodeByTime();
    /**
     * 根据id获取单个CouponCode对象
     * @param id 要查询的id
     * @return CouponCode
     */
	CouponCode getCouponCodeById(Long id);

	List<CouponCode> getCouponCodeList(@Param("e") CouponCode couponCode, @Param("page") PageRequest page);

	long countCouponCode(@Param("e") CouponCode couponCode);

	/**
	 * id查询优惠券编码
	 * @return
	 */
	CouponCodeDTO getCouponCodeDTOById(Long id);
	/**
     * 根据优惠券编码获取单个CouponCode对象
     * @return CouponCode
     */
	CouponCodeDTO getCouponCodeDTOByCode(String code);

	/**
	 * 个人中心我的优惠券
	 * @param couponCodeQuery
     * @return
     */
	List<CouponCodeDTO> getCouponCodeDTOList(@Param("e") CouponCodeQuery couponCodeQuery, @Param("page") PageRequest page);

	int countCouponCodeDTO(@Param("e") CouponCodeQuery couponCodeQuery);

	/*查询即将过期的优惠券*/
	List<CouponCodeDTO> getCouponCodeDTOByTimeOver();

}